﻿#define  _CRT_SECURE_NO_WARNINGS 1

#include<stdio.h>
#include<string.h>
#include<ctype.h>
//将字符串中的⼩写字⺟转⼤写，其他字符不变。

int main()
{
	int i = 0;
	char arr[] = { "I am a college Student" };
	char c;
	while (arr[i])
	{
		c = arr[i];
		if (islower(c))
			c -= 32;
			putchar(c);
			i++;	
	}
	return 0;
}

//使用tolower，将字符串中的⼩写字⺟转⼤写，其他字符不变。


int main()
{
	char arr[] = { "I am a Student" };
	int i = 0;
	while (arr[i] !='\0')
	{
		if (islower(arr[i]))
		{
			arr[i] = tolower(arr[i]);
		}
		i++;
	}
	printf("%s\n", arr);
	return 0;
}



//利用strlen测字符串的长度

int main()
{
	const char str1 = "abcde";
	const char str2 = "qwer";
	if (strlen(str2) - strlen(str1)> 0)
		//比较，因为strlen的返回值是size_t是一个无符号的整形
		//无论最终的结果是正数还是负数，其值的是一个没有符号的整数。
	{
		printf("str2>str1\n");
	}
	else 
	{
		printf("str1>str2\n");
	}
	return 0;
}



//.计数器的方式
#include<assert.h>
size_t mr_strlen(char* z)
{
	assert(z);//断言一下，防止z为NULL
	int count = 0;//计数器
	while (*z != '\0')
	{
		count++;
		z++;
	}
	return count;
}
int main()
{
	char arr[] = "abcdef";
	size_t yu = mr_strlen(arr);//创造出一个关于mr_strlen的函数
	printf("%zd\n", yu);
	return 0;
}





//2.指针-指针的方式
#include<assert.h>
size_t  my_strlen(char* s)
{
	assert(s);
	char* p = s;
	while (*p != '\0')
		p++;
	return p - s;
}
int main()
{
	char arr[] = "abcdef";
	size_t yu = my_strlen(arr);//创造出一个关于mr_strlen的函数
	printf("%zd\n", yu);
	return 0;
}




//.递归的方式
size_t mr_strlen(const char* c)
{
	if (*c == '\0')
		return 0;
	else
		return 1 + mr_strlen(c + 1);

}
int main()
{
	char arr[] = "abcdef";
	size_t yu = mr_strlen(arr);//创造出一个关于mr_strlen的函数
	printf("%zd\n", yu);
	return 0;
}
